The following discussion sets forth the inventors' own knowledge of certain technologies and/or problems associated therewith. Accordingly, this discussion is not an admission of prior art, and it is not an admission of the knowledge available to a person of ordinary skill in the art.
Automation and control systems make use of computers and/or microcontroller-based devices to “automate” the operation of other devices, machines, or appliances. For example, in home or building applications, an automation and control system may be configured to apply varying degrees of intelligence and automation to lighting, doors, window treatments, audio and video equipment, security systems, HVAC components, or the like. In industrial applications, automation and control systems may be configured to manage robotics systems, motors, machine vision equipment, assembly lines, or the like. Other applications include, for example, environmental monitoring, agriculture, law enforcement, military surveillance, etc. Generally speaking, automation and control systems may be employed in virtually any environment.
Typical elements of an automation and control system include sensors and controllers. In some cases, a single device may include both a sensor (e.g., a photodiode) and a controller (e.g., a circuit configured to control a switch to which a controlled device—a light bulb—is connected). In other cases, sensors and controllers may be distinct devices. It should be noted that, in various implementations, a given automation and control system might include tens or hundreds of disparate sensors and controllers, depending upon the system's complexity.
Most automation and control software programs are written, compiled, and executed on a single computer, sometimes referred to as the “head of control.” The inventors hereof have determined, however, that such a technique is only appropriate when the devices controlled by the head of control are within its reach. In those cases, the head of control may be capable of determining, in a reasonable amount of time, all the information needed in order to make its automation decisions. Often, such information is obtained from one or more devices via a network connection. The head of control may then be able to control a corresponding device(s), also in a reasonable amount of time, via the network connection.
In highly distributed environments or environments where there are many devices and/or long distances involved, however, the foregoing techniques do not work. For example, there are situations where the head of control must communicate with multiple devices, one at a time, and make a decision each time a different device replies. In these situations, varying degrees of latency in communications between the head of control and the remote device often lead to scalability problems.
Moreover, control and automation systems can have very dynamic properties. At any given time, the number of devices in a system may increase or decrease, the physical or geographical location of one or more devices may change, network connections may go down and later be re-established, certain communication channels may have better characteristics than others, etc. Generally speaking, every time a modification is made to a device or connection in the system, the program executed by the head of control needs to be modified in order to accommodate that change.